Website powered by

Hellbound Game Project - Procedural level generation in Houdini

Last academic year, I had the great opportunity and pleasure to work as a technical artist and level designer on Hellbound, a top-down action game developed in the custom engine Perry for PC and PS5.

Hellbound is an isometric rogue-like set in a gothic-inspired version of hell. The player takes control of a Fallen Angel that broke free from his eternal chains, in an attempt to redeem himself by overpowering the colossal demon crawling through an ever-changing labyrinth of procedural levels. Follow the link to play the game: https://buas.itch.io/hellbound

The game was developed in Perry Engine, a custom engine built by the programmers of our team, which gave us a set of constraints to work with. Therefore, the level generator that I created had to adhere to different requirements driven by these constraints. From Houdini to the engine, the levels needed to carry over module placement & texture information, collision information, lights at the OBJ level, and various mesh tags and attributes. We used the GLTF format to export fully lit & set-dressed levels to the engine, containing all necessary tags on meshes for functionality that could be accessed in-engine (wall and prop collisions, draw calls, point positions, light shadows etc.) I was responsible for generating and editing the levels, creating the lights at the OBJ level with a script so that they could be exported as GLTF and loaded in-engine, and establishing an export pipeline together with the programmers, which was a lot of trial and error.

In the future, I aim to optimize this tool and make it available for Unreal Engine as well.

I would like to give special thanks to the Bermuda Studio art team:
Angel Dimovski - Lead Artist & Environment Artist - responsible for the modular wall pieces, railings, and the environment props scattered through the levels, as well as visuals & lighting direction
https://www.artstation.com/angel_dimovski
Weronika Bączkowska - Technical Artist - responsible for the floor, lava & ornament texturing, as well as the lava pool and level edge stone system in Houdini
https://www.artstation.com/weriberry
Levon Dyulgeryan - VFX & SFX
https://www.artstation.com/levon_dyulgeran
Nikola Minchev - Character Artist
https://www.artstation.com/kolo12

As well as our programmers and designers, for which you can check out the full credits at https://buas.itch.io/hellbound/devlog/546689/full-credits

I am also incredibly grateful to Pedro Amaro Alpiarça dos Santos, Tech Art lecturer, for his input, help, and guidance with creating the wall partitioning system and the lighting script, and for his advice while facing technical challenges on this journey.
https://www.linkedin.com/in/probiner/

Various results of the level generator inside of Houdini.

EPC 2023 Showcase

Video showcase of gameplay and final in-game levels in the custom engine Perry.

In-game screenshot of a level.

In-game screenshot of a level.

Houdini tool demo (level generation, editor and lighting generation)

Generator general breakdown - from color coded map to fully lit & set-dressed level.

Generator general breakdown - from color coded map to fully lit & set-dressed level.

The backbone of the level design ruleset that drives the generation is the "player circle". The rooms are spacious, with lots of space to move and ensure that the player can always run around the map in circle patterns to dash and dodge attacks.

The backbone of the level design ruleset that drives the generation is the "player circle". The rooms are spacious, with lots of space to move and ensure that the player can always run around the map in circle patterns to dash and dodge attacks.

The system uses either a Wave Function Collapse setup with simple rules to create non-symmetrical rooms or an algorithm that creates "player circles" on diagonal, vertical, and horizontal lines for symmetrical-looking rooms.

The system uses either a Wave Function Collapse setup with simple rules to create non-symmetrical rooms or an algorithm that creates "player circles" on diagonal, vertical, and horizontal lines for symmetrical-looking rooms.

Lava pools can be generated by flooding the level with cellular automata, or they can be manually drawn by using splines. Door points will automatically be fixed by adding extra tiles in case the playable space is too tight.

Lava pools can be generated by flooding the level with cellular automata, or they can be manually drawn by using splines. Door points will automatically be fixed by adding extra tiles in case the playable space is too tight.

The levels then run through a Dijkstra pathfinding algorithm, where a Dijkstra map is generated and determines the validity of the levels.

The levels then run through a Dijkstra pathfinding algorithm, where a Dijkstra map is generated and determines the validity of the levels.

Since the levels were designed for an isometric game, walls had to be placed in a way that wouldn't affect player visibility. Back walls will always be tall, while front walls can be edited to follow a gradient and reduce in size.

Since the levels were designed for an isometric game, walls had to be placed in a way that wouldn't affect player visibility. Back walls will always be tall, while front walls can be edited to follow a gradient and reduce in size.

The official game trailer for Hellbound.